package top.zerozoo.learn.grade.dao.impl;

import org.springframework.dao.IncorrectResultSizeDataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import top.zerozoo.learn.grade.dao.AdminDao;
import top.zerozoo.learn.grade.entity.Admin;
import top.zerozoo.learn.grade.util.JdbcUtils;

public class AdminDaoImpl implements AdminDao {
    // 初始化JdbcTemplate对象 方便后续方法使用template操作数据库
    // 每个DAO实现类建议都使用JdbcTemplate
    private JdbcTemplate template = new JdbcTemplate(JdbcUtils.getDataSource());

    @Override
    public Admin findByUsernameAndPassword(String username, String password) {
        // 定义sql语句
        final String sql = "select * from admin where username = ? and password = ?";
        Admin result;
        try{
            result = template.queryForObject(sql, new BeanPropertyRowMapper<>(Admin.class), username, password);
        }catch (IncorrectResultSizeDataAccessException ex){
//            IncorrectResultSizeDataAccessException异常会在查询结果数量不为期望条数的情况下抛出(使用上述template语句期望条数为1)
//            如果抛出此错误 则代表没有找到相关数据 直接返回null
            return null;
        }
        return result;
    }
}
